package com.whfc.openapi.api.sys.service;

import com.whfc.entity.dto.login.MsUserLogin;
import com.whfc.fuum.dto.open.AccessCodeDTO;
import com.whfc.fuum.dto.open.AccessTokenDTO;
import com.whfc.fuum.dto.open.OpenApiClientDTO;
import com.whfc.fuum.param.open.AccessTokenParam;
import com.whfc.fuum.param.open.OpenApiTokenParam;
import com.whfc.hdc.dto.HdcAccessTokenDTO;
import com.whfc.hdc.params.HdcOpenApiTokenParam;

/**
 * @Description:开放接口授权
 * @author: xugcheng
 * @version: 1.0
 * @date: 2019/10/21 11:48
 */
public interface OpenApiTokenService {

    /**
     * 获取accessToken(旧GIS)
     *
     * @param accessTokenParam
     * @return
     */
    AccessTokenDTO getAccessToken(AccessTokenParam accessTokenParam);

    /**
     * 获取开放平台token(v1)
     *
     * @param param
     * @return
     */
    AccessTokenDTO getOpenApiToken(OpenApiTokenParam param);

    /**
     * 验证开放平台token
     *
     * @param accessToken
     * @return
     */
    OpenApiClientDTO validateOpenApiToken(String accessToken);

    /**
     * 获取code
     *
     * @param deptId
     * @param username
     * @param phone
     * @return
     */
    AccessCodeDTO getCode(Integer deptId, String username, String phone);


    /**
     * 硬件中心获取token
     *
     * @param param 参数
     * @return token
     */
    HdcAccessTokenDTO getHdcOpenApiToken(HdcOpenApiTokenParam param);


    /**
     * 验证开放平台硬件中心token
     *
     * @param accessToken token
     * @return token对象
     */
    HdcAccessTokenDTO validateHdcOpenApiToken(String accessToken);


    /**
     * 获取丘砚项目token
     *
     * @param apiKey    账号
     * @param apiSecret 密码
     * @return token
     */
    String getQiuyanAccessToken(String apiKey, String apiSecret);

    /**
     * 校验账号密码是否正确
     *
     * @param user
     * @return
     */
    void checkUser(MsUserLogin user);

    /**
     * 通过appKey获取组织机构
     *
     * @param appKey
     * @return
     */
    Integer getDeptIdByAppKey(String appKey);
}
